/**
 * 这个Demo 可以更快的理解 装饰器的作用
 *  这个思路可以广泛的利用于后端的服务器中
 */

{
  type successType = {
    result: string;
    code: number;
  };

  /**
   * 可以通过装饰器轻松实现一个好用的返回方法
   *  当然这个例子使用类的继承也能实现  但是使用装饰器也是一样轻松 甚至更新颖
   */

  const messageDecorator = (target: Function) => {
    target.prototype.message = (content: string): successType => {
      console.log({ result: content, code: 200 });
    };
  };

  @messageDecorator
  class LoginController {
    public login() {
      console.log("正在处理登录...");
      this.message("登录成功");
    }
  }

  new LoginController().login();

  @messageDecorator
  class ArticelController {
    public send() {
      console.log("正在发送中...");
      this.message("发送成功");
    }
  }

  new ArticelController().send();
}
